//
//  AppDelegate.swift
//  CBWWeiBo
//
//  Created by 陈博文 on 16/1/7.
//  Copyright © 2016年 陈博文. All rights reserved.
//

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
       
        //0.统一设置不被渲染
        UITabBar.appearance().tintColor        = UIColor.orangeColor()
        UINavigationBar.appearance().tintColor = UIColor.orangeColor()
        
        window = UIWindow(frame: UIScreen.mainScreen().bounds)
        window?.rootViewController = defaultViewController()
        window?.makeKeyAndVisible()
        window?.backgroundColor    = UIColor.whiteColor()
        
        // 注册监听
        NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("switchRootViewController:"), name: CBWChangeRootViewControllerNotification, object: nil)

        
           return true
    }
    
    deinit{
        
        NSNotificationCenter.defaultCenter().removeObserver(self)
    }
    
  }

extension AppDelegate{
    /**
     *切换跟控制器
     */
  
  @objc  private func switchRootViewController(notice:NSNotification){
        
        //判断 notic 是 yes 还是no

//    CBWLog(notice)
        // 1.取出userInfo中的message
        guard let info = notice.userInfo else
        {
            return
        }
        guard let flag = info["message"] as? Bool else
        {
            return
        }
        
        // 2.根据message对应的值, 决定对应的界面
        var sb = UIStoryboard(name: "Welcome", bundle: nil)
        if flag
        {
            // 跳转到首页
            sb = UIStoryboard(name: "Main", bundle: nil)
        }
        window?.rootViewController = sb.instantiateInitialViewController()!
    }
    
    
    /// 返回默认启动界面
    private func defaultViewController() -> UIViewController
    {
        // 1.判断是否已经登录
        var sb = UIStoryboard(name: "Main", bundle: nil)
        if UserAccount.isLogon()
        {
            // 2.判断是否有新版本
            if isNewVersion()
            {
                // 2.1有新版本 --> 新特性
                sb = UIStoryboard(name: "NewFeature", bundle: nil)
            }else
            {
                // 2.2没有新版本 --> 欢迎界面
                sb = UIStoryboard(name: "Welcome", bundle: nil)
            }
        }
        // 3.没有登录
        return sb.instantiateInitialViewController()!
    }

    
    /// 判断是否有新版本
    private func isNewVersion() -> Bool
    {
        // 1.获取软件当前的版本号
        guard let currentVersion = NSBundle.mainBundle().infoDictionary!["CFBundleShortVersionString"] as? String else
        {
            return false
        }
        
        // 2.获取软件以前的版本号
        let defaults = NSUserDefaults.standardUserDefaults()
        let sandboxVersion = (defaults.objectForKey("xmg") as? String) ?? "0"
        
        // 3.利用软件当前的版本号和以前的版本号进行比较
        // 如果当前 > 以前  --> 新版本
        //  1.0   0.0
        if currentVersion.compare(sandboxVersion) == NSComparisonResult.OrderedDescending
        {
            CBWLog("有新版本")
            // 4.如果有新版本就用当前的软件版本号更新以前的软件版本号
            defaults.setObject(currentVersion, forKey: "xmg")
            //            defaults.synchronize() // iOS7以后不用写
            return true
        }
        
//        CBWLog("没有新版本")
        // 没有新版本
        return false
    }
}

// MARK:=============== 自定义 log ===============
func CBWLog<AnyType>(message : AnyType, filePath : String = __FILE__, funcName : String = __FUNCTION__, lineNum : Int = __LINE__){
    #if ABC
        let fileName = (filePath as NSString).lastPathComponent
        print(fileName + "[\(funcName)]" + "(\(lineNum)):" + "\(message)")
    #endif
}

